Listing 11 - Page 0: No Title

##############################################################################
# Python From Scratch
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Site: https://pythonfromscratch.com
#
# File: listing\chapter 11\11.1510 - No Title.py
# Description: No Title
##############################################################################

class DBUniqueList(UniqueList):
    def __init__(self, elem_class):
        super().__init__(elem_class)
        self.deleted = []
    def remove(self, elem):
        if elem.id is not None:
            self.deleted.append(elem.id)
        super().remove(elem)
    def clean(self):
        self.deleted = []
class DBName(Name):
    def __init__(self, name, id_=None):
        super().__init__(name)
        self.id = id_
class DBTelephoneType(PhoneType):
    def __init__(self, id_, type):
        super().__init__(type)
        self.id = id_
class DBTelephone(Telephone):
    def __init__(self, number, type=None, id_=None, id_name=None):
        super().__init__(number, type)
        self.id = id_
        self.id_name = id_name
class DBTelephones(DBUniqueList):
    def __init__(self):
        super().__init__(DBTelephone)
class DBTelephoneType(UniqueList):
    def __init__(self):
        super().__init__(DBTelephoneType)
class DBPhonebookData:
    def __init__(self, name):
        self.name = name
        self.telephones = DBTelephones()
    @property
    def name(self):
        return self.__name
    @name.setter
    def name(self, value):
        if not isinstance(value, DBName):
            raise TypeError("name must be an instance of the DBname class")
        self.__name = value
    def search_telephone(self, telephone):
        position = self.telephones.search(DBTelephone(telephone))
        if position == -1:
            return None
        else:
            return self.telephones[position]
Click here to download the file